// if (true) {
//     // var foo = '1095h';
//     let foo = '1095h';
//     console.log('foo', foo);
// }


// =====================  开始  ======================

// 由于 var 声明 i 在内层结束是已经变成了3，所以外层只打印一次
// for (var i = 0; i < 3; i++) {
//     for (var i = 0; i < 3; i++) {
//         console.log('var 内层 i', i);
//     }
//     console.log('var 外层结束 i', i);
// }


// // 由于 内存循环 let 声明局部作用域，不会影响到外层 i 的值
// for (let i = 0; i < 3; i++) {
//     for (let i = 0; i < 3; i++) {
//         console.log('let 内层 i', i);
//     }
//     console.log('let 外层结束 i', i);
// }

// =====================  结束  ======================

// =====================  开始  ======================

// 声明了全局作用域 i， 循环结束全局变量 i 已经变成了3，所以每次打印都是3
// var elements = [{}, {}, {}];
// for (var i = 0; i < 3; i++) {
//     elements[i].onclick = function() {
//         console.log(' click i ', i);
//     }
// }

// elements[0].onclick();
// elements[1].onclick();
// elements[2].onclick();

// // 1、可以通过 闭包 -> 函数作用域 解决这个问题
// var elements2 = [{}, {}, {}];
// for (var i = 0; i < 3; i++) {
//     elements2[i].onclick = (function(i) {
//         return function() {
//             console.log(' click i ', i);
//         }
//     })(i)
// }

// elements2[0].onclick();
// elements2[1].onclick();
// elements2[2].onclick();

// 2、可以通过 块级作用域 解决这个问题
// var elements3 = [{}, {}, {}];
// for (let i = 0; i < 3; i++) {
//     elements3[i].onclick = function() {
//         console.log(' click i ', i);
//     }
// }

// elements3[0].onclick();
// elements3[1].onclick();
// elements3[2].onclick();


// =====================  结束  ======================

// =====================  开始  ======================
// console.log('=====================  开始  ======================')

// // for (let i = 0; i < 3; i++) {
// //     let i = 'foo';
// //     console.log('i', i);
// // }

// let i = 0;
// if (i < 3) {
//     let i = 'foo 1';
//     console.log('i', i);
// }
// i++;

// if (i < 3) {
//     let i = 'foo 2';
//     console.log('i', i);
// }
// i++;

// if (i < 3) {
//     let i = 'foo 3';
//     console.log('i', i);
// }

// console.log('=====================  结束  ======================')
// =====================  结束  ======================

// =====================  开始  ======================
console.log('=====================  开始  ======================')

// var 具有变量提升的特效
console.log('foo', foo);
var foo = '1095h';

console.log('foo2', foo2);
let foo2 = '1095h2';

console.log('=====================  结束  ======================')
// =====================  结束  ======================